<?php
/**
 * Autor:   Miguel A. Zilli
 * Email:   miguelzilli@gmail.com
 */

class Productor extends AppModel {
    var $name = 'Productor';
    var $displayField = 'apellido_prod';
    var $recursive='0';
    var $order=array(
        'Productor.apellido_prod'=>'ASC',
        'Productor.nombre_prod'=>'ASC',
        'Productor.cuit_prod'=>'ASC'
    );

    var $validate = array(
        'apellido_prod' => array(
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        ),
        'nombre_prod' => array(
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        ),
        'cuit_prod'=>array(
            array('rule'=>'isUnique','message'=>'El numero ingresado ya existe.'),
            array('rule'=>array('between',11,11),'message'=>'Deben ser 11 dígitos.'),
            array('rule'=>'numeric','message'=>'Solo se permiten números.','allowEmpty' => false),
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        ),
        'tipo_doc_prod' => array(
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        ),
        'nro_doc_prod' => array(
            array('rule'=>'isUnique','message'=>'El numero ingresado ya existe.'),
            array('rule'=>'numeric','message'=>'Solo se permiten números.','allowEmpty' => false),
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        ),
        'nac_prod' => array(
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        ),
        'dom_prod' => array(
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        ),
        'email_prod' => array(
            array('rule'=>'email','message'=>'Direccion de email invalida.','allowEmpty' => true)
        ),
        'localidad_id' => array(
            array('rule'=>'notEmpty','message'=>'Debe completar este dato.','required'=>true)
        )
    );

    //The Associations below have been created with all possible keys, those that are not needed can be removed
    var $belongsTo = array(
        'Acoentidad' => array(
            'className' => 'Acoentidad',
            'foreignKey' => 'acoentidad_id'
        ),
        'Localidad' => array(
            'className' => 'Localidad',
            'foreignKey' => 'localidad_id'
        ),
        'Ivacondicion' => array(
            'className' => 'Ivacondicion',
            'foreignKey' => 'ivacondicion_id'
        )
    );

    var $hasMany = array(
        'Acoproduccion' => array(
            'className' => 'Acoproduccion',
            'foreignKey' => 'productor_id',
            'dependent' => false
        ),
        'Predio' => array(
            'className' => 'Predio',
            'foreignKey' => 'productor_id',
            'dependent' => false
        ),
        'ProductoresProveedor' => array(
            'className' => 'ProductoresProveedor',
            'foreignKey' => 'productor_id',
            'dependent' => false
        )
    );

    var $hasAndBelongsToMany = array(
        'Actividadtipo' => array(
            'className' => 'Actividadtipo',
            'joinTable' => 'actividadtipos_productores',
            'foreignKey' => 'productor_id',
            'associationForeignKey' => 'actividadtipo_id',
            'unique' => true,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'finderQuery' => '',
            'deleteQuery' => '',
            'insertQuery' => ''
        )
    );

    public function beforeSave(){
        if(!empty($this->data['Productor'])){
            foreach($this->data['Productor'] as $campo=>$valor){
                $this->data['Productor'][$campo]=strtoupper($valor);
            }
            if(!empty($this->data['Productor']['email_prod'])){
                $this->data['Productor']['email_prod']=strtolower($this->data['Productor']['email_prod']);
            }
        }
        return true;
    }
}
?>